<?php

class Datos_tabla extends CI_Controller {

	var $bbdd; //nombre base datos
	var $tabla; //nombre tabla que solicitaremos datos
	var $limit; //limite de registros a mostrar en la tabla web
	var $sort; //campo que ordenaremos los registros de la tabla
	var $campo_busqueda;
	var $valor_busqueda;
	
	public function __construct(){
		parent::__construct();
	}
	
	public function index()	{ }
	
	public function mostrar(){ //muestra datos de la tabla para montar en la tabla dependiendo de los parametros recibidos.
		
		$this->load->model('bbddDao');
		$this->load->library('utils');

		$this->getParams(); // Recogemos parametros enviados desde la tabla.
		$info = $this->getData(); //recuperamos informacion de la tabla segun los parametros recibidos.
		
		$returnValue['total']=$info['total_registros']; // contamos el total de los registros. 
		$returnValue['rows']=$this->setValoresRow($info['data'],$this->getColumnasTabla($info['data'])); // enviamos la info devuelta de la select y los colocamos en el formato necesario para la tabla.Se envian los campos de la tabla.

		echo json_encode($returnValue);
	}
	
	
	public function update_registro(){
		
		$params = $this->getParamsUrl();
		$queryUpdate = $this->montarQueryUpdate($params);
		print_r($queryUpdate);
		
	}
	
	public function delete_registro(){
		$this->load->model('tablasDao');
		$this->bbdd = $this->uri->segment(3);
		$this->tabla = $this->uri->segment(4);
		$id_registro = $this->uri->segment(5);
		
		$queryString = "DELETE FROM `".$this->bbdd."`.`".$this->tabla."` WHERE `id` = '".$id_registro."';";
		$resultQuery = $this->tablasDao->eliminar_registro($queryString);

	}
	
	public function insert_registro(){
		$this->load->model('tablasDao');
		
		$params = $this->getPostParamsUrl();
		
		$queryString = $this->montarQueryInsert($params);
		$resultQuery = $this->tablasDao->insertar_nuevo_registro($queryString);
		
		$this->mostrar_result($resultQuery);
		
	}
	
	/*
	 * 
	 * 
	 * 
	 * 
	 * 
	 * 
	 */
	
	function getParams(){
		$this->bbdd = $this->uri->segment(3); // nombre de la base de datos
		$this->tabla = $this->uri->segment(4); // param con la tabla de la base de datos
		$this->limit=$this->utils->getLimit(); // parametro con el limit en la query
		$this->sort=$this->utils->getSort(); // param con orden de query
		
		if(!empty($_POST['campo_busqueda'])){
			$this->campo_busqueda = $_POST['campo_busqueda'];
		}
		if(!empty($_POST['valor_busqueda'])){
			$this->valor_busqueda = $_POST['valor_busqueda'];
		}
	}
	
	function getData(){
		
		if(isset($this->campo_busqueda) && isset($this->valor_busqueda)){
			$info['data'] = $this->bbddDao->getAllInfoTablaPorBusqueda($this->bbdd,$this->tabla,$this->campo_busqueda,$this->valor_busqueda,$this->sort,$this->limit);
			$info['total_registros'] = $this->bbddDao->countRegistrosPorBusqueda($this->bbdd,$this->tabla,$this->campo_busqueda,$this->valor_busqueda,$this->sort,$this->limit);
		}else{
			$info['data'] = $this->bbddDao->getAllInfoTabla($this->bbdd,$this->tabla,$this->sort,$this->limit); //,$sort,$limit);
			$info['total_registros'] = $this->bbddDao->contarRegistrosTabla($this->bbdd,$this->tabla);
		}
		return $info;
	}
	
	function setValoresRow($info,$columnas){
		$rows=array();
		for($i=0;$i<count($info);$i++){
			for($c=0;$c<count($columnas);$c++){
				$rows[$i][$columnas[$c]]=$info[$i][$columnas[$c]];
			}
		}
		return $rows;
	}
	
	function getColumnasTabla($info){
		return array_keys($info[0]);
	}

	
	function getParamsUrl(){
		
		$data = array();
		$this->bbdd = $this->uri->segment(3);
		$this->tabla = $this->uri->segment(4);
		$params =  array_reverse($_GET);
		$i = 0; // contador
		foreach ($params as $campo=>$valor) { //recupera todos los parametros GET recibidos por url
			$data[$i][$campo] = urldecode($valor); // recupero uno a uno el valor y lo coloco en una array especificando el valor y el campo de la tabla como nombre de array.
			$i++;
		}
		return $data;
	}
	
	function getPostParamsUrl(){
	
		$data = array();
		$this->bbdd = $this->uri->segment(3);
		$this->tabla = $this->uri->segment(4);
		$params =  array_reverse($_POST);
		$i = 0; // contador
		foreach ($params as $campo=>$valor) { //recupera todos los parametros GET recibidos por url
			$data[$i][$campo] = urldecode($valor); // recupero uno a uno el valor y lo coloco en una array especificando el valor y el campo de la tabla como nombre de array.
			$i++;
		}
		return $data;
	}
	
	function montarQueryUpdate($params){
		
		echo($this->bbdd);
		print_r($params);
		
		/*
		 * 
		 * UPDATE `federacion`.`jugadores`
			SET `id` = 'id',
			  `nombre` = 'nombre',
			  `apellido1` = 'apellido1',
			  `apellido2` = 'apellido2',
			  `id_equipo` = 'id_equipo',
			  `posicion` = 'posicion',
			  `titular` = 'titular',
			  `foto` = 'foto',
			  `tipo` = 'tipo'
			WHERE `id` = 'id';
		 */
	}
	
	function montarQueryInsert($params){
		$params =$this->tratar_array($params); 
		$queryString="INSERT INTO `".$this->bbdd."`.`".$this->tabla."` ("; //iniciamos el string que servira de query
		
		for($i=0;$i<count($params);$i++){ //añadimos a la query los nombres de los campos de la tabla a insertar el registro
			$queryString .= "`".$params[$i]['campo_tabla']."`,";
		}
		
		$queryString = substr($queryString, 0, -1); //eliminamos el ultimo caracter de la cadena (,).
		$queryString .= ") VALUES (";
		
		for($i=0;$i<count($params);$i++){ //añadimos a la query los nombres de los campos de la tabla a insertar el registro
			$queryString .= "'".$params[$i]['valor']."',";
		}
		$queryString = substr($queryString, 0, -1); //eliminamos el ultimo caracter de la cadena (,).
		$queryString .= ");";
		
		return $queryString;
	
	}
	
	function montarQueryDelete(){
		/*
		 * 
		 * DELETE
			FROM `federacion`.`jugadores`
			WHERE `id` = 'id';
		 */
		
	}
	
	
	function tratar_array($params){ //tratamos los parametros recibidos en una array para poder montar las querys.
		$registro = array();
		
		for($i=0;$i<count($params);$i++){
			$val = $params[$i];
			$campo_tabla = array_keys($val)[0];
			$registro[$i]['campo_tabla'] = $campo_tabla;
			$registro[$i]['valor'] = $val[$campo_tabla];
				
		}
		return $registro;
	}
	
	function mostrar_result($resultQuery){
		if($resultQuery == true){
			$result = "Insercion realizada correctamente";
			echo json_encode($result);
		}else{
			$result = "Error al realizar la insercion.";
			echo json_encode($result);
		}
	}
	
	
}

?>